package com.xianggu.designMode.chainMethod.demo03.impl;

import com.xianggu.designMode.chainMethod.demo04.HandlerFailureListener;
import com.xianggu.designMode.chainMethod.demo03.Order;
import com.xianggu.designMode.chainMethod.demo03.OrderHandler;

import java.util.ArrayList;
import java.util.List;

// 扩展抽象处理者，增加观察者模式的功能
public abstract class ObservableHandler extends OrderHandler {
    // 保存所有注册的观察者（监听器）
    private List<HandlerFailureListener> listeners = new ArrayList<>();

    // 注册观察者
    public void addListener(HandlerFailureListener listener) {
        listeners.add(listener);
    }

    // 通知所有观察者：订单处理失败
    public void notifyFailure(Order order, String failedStep) {
        for (HandlerFailureListener listener : listeners) {
            listener.onFailure(order, failedStep);
        }
    }
}